﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace FictionFather
{
    class Program
    {
        static void Main( string [] args )
        {
            string input = Console.ReadLine();

            var shop = ShopManager.GetAShop((ShopType) ( int.Parse(input) ));
            if( shop != null )
            {
                Console.WriteLine(string.Format("Better:Shop name is '{0}'", shop.name));
                Console.WriteLine(string.Format("Better:Use {0}th money", shop.priceType));
            }
            else {
                Console.WriteLine("only input 1,2 or 3");
            }
            Console.ReadLine();
        }
    }

    class ShopDay {
        public string name = "DayShop";
        public int priceType = 2;
    }

    class ShopWeek {
        public string name = "WeekShop";
        public int priceType = 200;
    }

    class ShopMonth{
        public string name = "MonthShop";
        public int priceType = 1001;
    }

    enum ShopType
    {
        ShopDay = 1,
        ShopWeek = 2,
        ShopMonth = 3
    }

    class ShopBase {
        public virtual string name { get { return string.Empty; } }
        public virtual int priceType { get { return 0; } }
    }

    class ShopDayBox : ShopBase {
        ShopDay info = new ShopDay();
        public override string name
        {
            get
            {
                return info.name;
            }
        }
        public override int priceType
        {
            get
            {
                return info.priceType;
            }
        }
    }

    class ShopWeekBox : ShopBase
    {
        ShopWeek info = new ShopWeek();
        public override string name
        {
            get
            {
                return info.name;
            }
        }
        public override int priceType
        {
            get
            {
                return info.priceType;
            }
        }
    }

    class ShopMonthBox : ShopBase
    {
        ShopMonth info = new ShopMonth(); 
        public override string name
        {
            get
            {
                return info.name;
            }
        }
        public override int priceType
        {
            get
            {
                return info.priceType;
            }
        }
    }

    class ShopManager {
        static public ShopBase GetAShop( ShopType type )
        {
            switch( type )
            {
                case ShopType.ShopDay: return new ShopDayBox();
                case ShopType.ShopWeek: return new ShopWeekBox();
                case ShopType.ShopMonth: return new ShopMonthBox();
            }
            return null;
        }
    }
}
